package com.ycd.xhr;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

/**
 * 异步消息是发送者发送消息，无需等待发送结果就可以再发送第二条消息，它是通过回调的方式来获取到消息的发送结果
 */
public class producer {

    public static Message message;

    public static void main(String[] args) throws Exception {
        // 1.创建生产者对象
        DefaultMQProducer producer = new DefaultMQProducer("Hi_hello_word_xhr");
        // 2.设置nameserver连接
        producer.setNamesrvAddr("127.0.0.1:9876");
        // 3.启动生产者
        producer.start();
        // 4.设置消息
        for (int i = 0; i < 10; i++) {
            message = new Message("xhr", "bbb", ("世界你好！！" + i).getBytes(StandardCharsets.UTF_8));
            // 5.将消息同步发送到broker
            producer.send(message, new SendCallback() {
                // 发送成功结果处理
                @Override
                public void onSuccess(SendResult sendResult) {
                    System.out.println(sendResult);
                }
                // 发送异常结果处理
                @Override
                public void onException(Throwable throwable) {
                    throwable.printStackTrace();
                    System.out.println("发送消息失败");
                }
            });
        };
        System.out.println("测试异步");
    }
}
